package flexconsole.model {
	import org.puremvc.as3.interfaces.IProxy;
	
	/**
	 * Proxy for the application configuration.
	 *
	 * @author ivanchoo
	 *
	 */
	public interface IConfigProxy extends IProxy {
		/**
		 * Source XML object.
		 */
		function get source():XML;
		/**
		 * @private
		 */
		function set source(xml:XML):void;
		/**
		 * Returns the value of a configuration based on the <code>key</code>.
		 *
		 * <p>This method returns the <code>defaultValue</code> if the <code>key</code> does not exists</p>
		 *
		 */
		function getValue(key:String, defaultValue:* = null):*;
		/**
		 * Sets a new <code>value</code> for the configuration <code>key</code>.
		 *
		 * <p>If the <code>value</code> is <code>null</code>, the <code>key</code> will be removed from the configuration.</p>
		 */
		function setValue(key:String, value:* = null):void;
	
	}
}